//8．编写一个程序，以一个字符和任意文件名作为命令行参数。
//如果字符后面没有参数，该程序读取标准输入；
//否则，程序依次打开每个文件并报告每个文件中该字符出现的次数。
//文件名和字符本身也要一同报告。程序应包含错误检查，以确定参数数量是否正确和是否能打开文件。
//如果无法打开文件，程序应报告这一情况，然后继续处理下一个文件。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

static int count_char(int ch, FILE *stream);
int main(int size, char **argv){
    if (size < 2) {
        printf("must set char");
        exit(EXIT_FAILURE);
    }
    FILE *file = stdin;
    if (size == 2) {
        printf("stdin contain %c the number of %d \n", argv[1][0], count_char(argv[1][0], file));
    }
    for (int i = 2; i < size; ++i) {
        if ((file = fopen(argv[i],"r"))==NULL) {
            printf("open %s failed\n", argv[i]);
        } else{
            printf("%s contain %c the number of %d \n",argv[i], argv[1][0], count_char(argv[1][0], file));
        }
    }
    return 0;
}

static int count_char(int ch, FILE *stream){
    int sum = 0;
    int temp;
    while ((temp = fgetc(stream)) != EOF) {
        if (temp == ch) {
            sum++;
        }
    }
    return sum;
}